package com.inspur.dgov.tenant.feign;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.inspur.dgov.common.boot.operation.RedissonCollection;
import com.inspur.dgov.common.tool.api.R;
import com.inspur.dgov.common.tool.constant.AppConstant;
import com.inspur.dgov.tenant.entity.PubTenant;
import com.inspur.dgov.tenant.service.PubTenantService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 租户 Feign接口实现
 *
 * @Author chiyupei
 * @Date 19/11/15 下午3:35
 * @Version 1.0
 * @Description 租户 Feign接口实现
 */
@RestController
@AllArgsConstructor
public class TenantFeign implements ITenantFeign {

    private RedissonCollection redissonCollection;

    private PubTenantService pubTenantService;

    /**
     * 根据租户编码获取租户信息
     *
     * @param tenantCode  租户编码
     * @return
     */
    @Override
    public R<PubTenant> getTenantInfoByCode(String tenantCode) {
        PubTenant tenant = null;
        //先从Redis中获取
        List<PubTenant> tenantRList = this.redissonCollection.getList(AppConstant.DEFAULT_TENANT_KEY);
        if (null != tenantRList) {
            tenant = tenantRList.stream().filter(item -> tenantCode.equals(item.getCode())).findAny().orElse(null);
        }
        if (null == tenant) {
            QueryWrapper<PubTenant> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().eq(PubTenant::getStatus, AppConstant.DB_STATUS_NORMAL)
                    .eq(PubTenant::getCode, tenantCode);
            tenant = this.pubTenantService.getOne(queryWrapper);
        }
        return R.data(tenant);
    }
}
